home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / ecstr3.arc / STRNEND.C < prev    next >
C/C++ Source or Header  |  1987-03-04  |  844b  |  38 lines

  1. /*  File   : strnend.c
  2.     Author : Richard A. O'Keefe.
  3.     Updated: 1 June 1984
  4.     Defines: strnend()
  5.  
  6.     strnend(src, len)
  7.     returns a pointer to just after the end of the string src, which is
  8.     terminated by a NUL character, or by exhaustion of the length bound
  9.     len.  That is, strnend(s,L)-s = strnlen(s,L).  s+strnlen(s,L) could
  10.     of course be used instead, but this is sometimes clearer.
  11.     Beware: the asm version works only if 0 <= len < 65535.
  12. */
  13.  
  14. #include "strings.h"
  15.  
  16. #if    VaxAsm
  17.  
  18. char *strnend(src, len)
  19.     char *src;
  20.     int len;
  21.     {
  22.        asm("locc $0,8(ap),*4(ap)");
  23.        asm("movl r1,r0");
  24.     }
  25.  
  26. #else  ~VaxAsm
  27.  
  28. char *strnend(src, len)
  29.     register char *src;
  30.     register int len;
  31.     {
  32.        while (--len >= 0 && *src) src++;
  33.        return src;
  34.     }
  35.  
  36. #endif VaxAsm
  37.  
  38.